home *** CD-ROM | disk | FTP | other *** search
- Section Copperlist,code_C
-
- opt c-,o+
-
- move.l 4.w,a6 ; open graphics lib
- jsr -$84(a6) ; disallow
-
- lea dlib,a1
- moveq #0,d0
- move.l 4.w,a6
- jsr -$228(a6)
- tst d0
- beq error
- move.l D0,dos ; store address of dos lib
-
- lea glib,a1
- moveq #0,d0
- move.l 4.w,a6
- jsr -$228(a6)
- tst d0
- beq error
- move.l D0,graphics ; store address of graphics lib
-
- move.l #Screen+32,d0 ; store address of bitplane0
- move.w d0,bitplane0_lo ; into the copper list
- swap d0
- move.w d0,bitplane0_hi
- swap d0
- add.l #bplen,d0
-
- move.w d0,bitplane1_lo ; into the copper list
- swap d0
- move.w d0,bitplane1_hi
- swap d0
- add.l #bplen,d0
-
- move.w d0,bitplane2_lo ; into the copper list
- swap d0
- move.w d0,bitplane2_hi
- swap d0
- add.l #bplen,d0
-
- move.w d0,bitplane3_lo ; into the copper list
- swap d0
- move.w d0,bitplane3_hi
- swap d0
-
-
- move.l 4.w,a6
- move.l #scrsize,d0
- move.l #$10002,d1
- jsr -198(a6)
-
- move.l d0,screen2
- move.l screen2,topline
-
- move.l graphics,a6
- add.l #$32,a6
- move.w #$80,$dff096 ; dma control write
- move.l (a6),old_copper ; store the address of the
- move.l #my_copper,(a6) ; old copperlist
- move.w #$8080,$dff096 ; dma control write
- move.w #$8010,$dff09a ; interupt enable bits
- move.l $6c.w,old_interupt ; store old level 3 int
- move.l #new_interupt,$6c.w ; store my routine
- ; into level 3 int
- jsr setup_screen
- move.w #0,finished
-
- bchg #1,$bfe001 ; turn led off
-
- not: move.w finished,d0
- beq.s not
-
- bchg #1,$bfe001 ; turn led on
-
- move.l old_interupt,$6c.w ; resore old level 3 int
- move.l #$10,$dff09a ; Disable Level 3 Interupt
- move.l graphics,a6
- add.l #$32,a6
- move.w #$0080,$dff096
- move.l old_copper,(a6) ; restore old copper list
- move.w #$8080,$dff096
- move.l graphics,a1
- move.l 4.w,a6
- jsr -$19e(a6)
- move.l 4.w,a6
- jsr -138(a6)
-
- move.l 4.w,a6
- move.l screen2,a1
- move.l #scrsize,d0
- jsr -210(a6)
-
- Error: moveq #0,d0 ; fin
- rts
-
- runline: dc.l 0
- finished: dc.w 0
-
- new_interupt:
- movem.l d0-d7/a0-a6,-(sp)
-
- wait_irq:
- and.w #$10,$dff01e
- beq no_music
- move.w #$10,$dff09c
-
- subq.l #1,times
- bmi.s do_keys
-
- move.l topline,d0
- add.l step,d0
- move.l d0,topline
-
- bra not_down
-
- do_keys:
-
- clr.l d0
- clr.l d1
-
- move.b $bfec01,d0
- cmp.b #119,d0
- bne not_return
-
- move.l ypos,d0
- lea commands,a0
- cmp.l #0,d0
- beq.s found_runline
-
- find1:
- cmp.b #0,(a0)+
- bne.s find1
-
- subq.l #1,d0
- bne.s find1
-
- found_runline:
-
- move.l a0,runline
-
- no_zero:
- move.b $bfec01,d0
- cmp.b #119,d0
- beq.s no_zero
-
- move.l old_interupt,$6c.w ; resore old level 3 int
- move.l #$10,$dff09a ; Disable Level 3 Interupt
- move.l graphics,a6
- add.l #$32,a6
- move.w #$0080,$dff096
- move.l old_copper,(a6) ; restore old copper list
- move.w #$8080,$dff096
- move.l graphics,a1
- move.l 4.w,a6
- jsr -$19e(a6)
- move.l 4.w,a6
- jsr -138(a6)
-
- move.l runline,a0
- move.l (a0),d0
- cmp.l #"CLI ",d0
- bne.s not_cli
-
- move.w #1,finished
-
- not_cli:
-
- move.l dos,a6
- move.l runline,d1
- clr d2
- clr d3
-
- movem.l d0-d7/a0-a6,-(sp)
- jsr -$de(a6)
- movem.l (sp)+,d0-d7/a0-a6
-
- move.l 4.w,a6
- jsr -$84(a6) ; disallow
-
- lea dlib,a1
- moveq #0,d0
- move.l 4.w,a6
- jsr -$228(a6)
- tst d0
- beq error
- move.l D0,dos ; store address of dos lib
-
- lea glib,a1
- moveq #0,d0
- move.l 4.w,a6
- jsr -$228(a6)
- tst d0
- beq error
- move.l D0,graphics ; store address of graphics lib
-
- move.l graphics,a6
- add.l #$32,a6
- move.w #$80,$dff096 ; dma control write
- move.l (a6),old_copper ; store the address of the
- move.l #my_copper,(a6) ; old copperlist
- move.w #$8080,$dff096 ; dma control write
- move.w #$8010,$dff09a ; interupt enable bits
- move.l $6c.w,old_interupt ; store old level 3 int
- move.l #new_interupt,$6c.w ; store my routine
-
- bra.s not_down
-
- not_return:
- cmp.b #103,d0
- bne.s not_up
-
- move.l ypos,d7
- beq.s not_up
-
- subq.l #1,ypos
-
- move.l #-80,step
- move.l #4,times
-
- move.l topline,d0
- add.l #-80,d0
- move.l d0,topline
-
- not_up:
- cmp.b #101,d0
- bne.s not_down
-
- move.l ypos,d7
- move.l max,d6
- cmp.l d6,d7
- beq.s not_down
-
- addq.l #1,ypos
-
- move.l #80,step
- move.l #4,times
-
- move.l topline,d0
- add.l #80,d0
- move.l d0,topline
-
- not_down:
-
- move.l topline,a5
-
- move.l a5,d0 ; store address of bitplane0
- move.w d0,bitplane4_lo ; into the copper list
- swap d0
- move.w d0,bitplane4_hi
-
- add.l #(11*tall*40)-80,a5
-
- move.l a5,d0
- lea optical,a0
- add.l #10,a0
- move.w #8,d1
-
- optic: move.w d0,(a0)
- swap d0
- addq.l #4,a0
- move.w d0,(a0)
- swap d0
- add.l #16,a0
-
- add.l #40,d0
-
- subq.w #1,d1
- bpl.s optic
-
- move.l #2500,d0
- pause: dbf d0,pause
-
-
- no_music:
- movem.l (sp)+,d0-d7/a0-a6
- dc.w $4ef9 ; jmp
- old_interupt: dc.l 0 ; the old int lev 3
-
- setup_screen:
-
- lea cmap,a0
- move.w (a0)+,d0
-
- lea screen,a1
- move.w #15,d0
- cmaploop:
- move.w (a1)+,(a0)+
- addq.l #2,a0
- subq.w #1,d0
- bpl.s cmaploop
-
- lea names,a1
- move.l screen2,a2
- add.l #(11*tall*40)-80,a2
- jsr blit_message
-
- moveq.l #10,d0
-
- moveq.l #-7,d7
-
- plot_again:
-
- add.l #40*tall,a2
- jsr blit_message
-
- addq.l #1,d7
-
- move.b (a1),d0
- bne.s plot_again
-
- move.l d7,max
-
- rts
-
- blit_message:
-
- movem.l d0-d7/a2-a6,-(sp)
-
- move.l a1,a6
- clr.b d0
- moveq.l #-1,d1
-
- blit_message_loop1:
-
- addq.l #1,d1
- move.b (a6),d0
- addq #1,a6
- cmp.b #0,d0
- bne.s blit_message_loop1
-
- move.w d1,d5
- and.w #1,d5
- asl.w #1,d5
- move.w d5,mid
-
- move.l a2,midadd
- move.w d1,d5
-
- addq.l #1,d1
- lsr.l #1,d1
- moveq.l #20,d6
- sub.l d1,d6
- add.l d6,a2
- move.l a2,d2
- and.l #$fffffffe,d2
- move.l a2,d3
- and.l #1,d3
- move.l d2,a2
-
- move.w #12,d6
- cmp.l #1,d3
- beq.s cont_blit_message
-
- add.w #12,mid
- subq.l #2,midadd
-
- cont_blit_message:
-
- move.w d6,d7
- mulu #8192,d7
-
- subq.w #4,d6
- cmp.w #4,d6
- bne.s other_half
-
- move.w #12,d6
- add.l #80,a2
-
- other_half:
-
- sub.l #40,a2
- clr.w d0
- lea font,a0
- move.b (a1),d0
- addq.l #1,a1
- cmp.b #0,d0
- bne.s mess_is_ok
-
- movem.l (sp)+,d0-d7/a2-a6
-
- move.w mid,d5
- mulu #8192,d5
- or.w #(%1001*256)+$f0,d5
-
- move.l midadd,a3
-
- Move.l a3,$dff054 ; dest mem d
- Move.l a2,$dff050 ; source mem a
- Move.w #$ffff,$dff044 ; blit 1st word mask source a
- move.w #$ffff,$dff046 ; blit last word mask source a
- move.w #0,$dff064 ; blit modulo for source a
- move.w d5,$dff040
- move.w #0,$dff042 ; blit cont reg 1
- Move.w #0,$dff066 ; modulo for dest
- Move.w #(8*64)+40,$dff058 ; blit height,width
-
- jsr do_blit
-
- dont_centre:
- rts
-
-
- mess_is_ok:
- sub #32,d0
- mulu #16,d0
- add d0,a0
-
- Move.l a2,$dff054 ; dest mem d
- Move.l a0,$dff050 ; source mem a
- move.l a2,$dff048 ; source mem c
- Move.w #$ffff,$dff044 ; blit 1st word mask source a
- move.w #$ffff,$dff046 ; blit last word mask source a
- move.w #0,$dff064 ; blit modulo for source a
- move.w #38,$dff060 ; blit modulo for source c
- or.w #(%1011*256)+$fa,d7
- move.w d7,$dff040 ; blit cont reg 0
- move.w #0,$dff042 ; blit cont reg 1
- Move.w #38,$dff066 ; modulo for dest
- Move.w #(8*64)+1,$dff058 ; blit height,width
-
- jsr do_blit
-
- addq.l #1,a2
- bra cont_blit_message
-
- do_blit:
- btst.b #6,$dff002
- bne.s do_blit
- rts
-
-
- tadd equ 230*46
-
-
-
-
- Section copdat,Data_c
-
- names:
- dc.b "A",0
- dc.b "AA",0
- dc.b "AAA",0
- dc.b "AAAA",0
- dc.b "AAAAA",0
- dc.b "AAAAAA",0
- dc.b "AAAAAAA",0
- dc.b "AAAAAAAA",0
- dc.b "AAAAAAAAA",0
- dc.b "AAAAAAAAAA",0
- dc.b "AAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
- dc.b "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0
-
- dc.b " ",0
- dc.b "(C) LSD 1990",0
- dc.b "WRITTEN BY SHAGRATT OF LSD",0
- dc.b " ",0
- dc.b " ",0
- dc.b " ",0
- dc.b " ",0
- dc.b 0
-
- even
-
- commands:
- dc.b "list df0:",0
- dc.b " ",0
- dc.b "list df1:",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
- dc.b "CLI ",0
-
-
- mid: dc.w 0
- midadd: dc.l 0
- totalnumber: dc.l 0
-
- old_copper: dc.l 0
- graphics: dc.l 0
- dos: dc.l 0
-
- my_copper: dc.w $100,$4200 ; 4 bp - lores -
- dc.w $104,$a ; bp control reg
- dc.w $108,0 ; bp modulo - odd
- dc.w $10a,0 ; bp modulo - even
- dc.w $180,0 ; colour 0 to black
-
- dc.w $120,0,$122,0
-
- dc.w $182,$fff
-
- dc.w $092,$38 ; bp start horz
- dc.w $08e,$2c8c ; bp window start left
- dc.w $090,$2ce3 ; bp window bot right
- dc.w $094,$2dd0 ; bp stop horz
-
- cmap: dc.w $180,0
- dc.w $182,0
- dc.w $184,0
- dc.w $186,0
- dc.w $188,0
- dc.w $18a,0
- dc.w $18c,0
- dc.w $18e,0
- dc.w $190,0
- dc.w $192,0
- dc.w $194,0
- dc.w $196,0
- dc.w $198,0
- dc.w $19a,0
- dc.w $19c,0
- dc.w $19e,0
-
-
- dc.w $0e0
- bitplane0_hi: dc.w 0
- dc.w $e2
- bitplane0_lo: dc.w 0,$e4
- bitplane1_hi: dc.w 0
- dc.w $e6
- bitplane1_lo: dc.w 0,$e8
- bitplane2_hi: dc.w 0
- dc.w $ea
- bitplane2_lo: dc.w 0,$ec
- bitplane3_hi: dc.w 0
- dc.w $ee
- bitplane3_lo: dc.w 0
-
- dc.b top_of_copper,1
- dc.w $ff00,$182,$000
- dc.w $100,$1200 ; 1 bp - lores
-
- dc.w $0e0
- bitplane4_hi: dc.w 0
- dc.w $e2
- bitplane4_lo: dc.w 0
-
- dc.b top_of_copper+1,1
- dc.w $ff00,$182,$222
- dc.b top_of_copper+2,1
- dc.w $ff00,$182,$444
- dc.b top_of_copper+3,1
- dc.w $ff00,$182,$666
- dc.b top_of_copper+4,1
- dc.w $ff00,$182,$888
- dc.b top_of_copper+5,1
- dc.w $ff00,$182,$aaa
- dc.b top_of_copper+6,1
- dc.w $ff00,$182,$ccc
- dc.b top_of_copper+7,1
- dc.w $ff00,$182,$eee
- dc.b top_of_copper+8,1
- dc.w $ff00,$182,$fff
-
- optical:
- dc.b down+00,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$200
- dc.b down+02,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$600
- dc.b down+04,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$a00
- dc.b down+06,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$f00
- dc.b down+08,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$a00
- dc.b down+10,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$600
- dc.b down+12,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$200
- dc.b down+14,1
- dc.w $ff00,$108,-40,$e2,0,$e0,0,$180,$000 ; decender line
- dc.b down+16,1
- dc.w $ff00,$108, 0,$e2,0,$e0,0,$180,$000 ; decender line
-
- dc.w $ffe1,$fffe ; wait for end of ntsc screen
-
- dc.w $2501,$ff00,$182,$fff
- dc.w $2601,$ff00,$182,$eee
- dc.w $2701,$ff00,$182,$ccc
- dc.w $2801,$ff00,$182,$aaa
- dc.w $2901,$ff00,$182,$888
- dc.w $2a01,$ff00,$182,$666
- dc.w $2b01,$ff00,$182,$444
- dc.w $2c01,$ff00,$182,$222
- dc.w $2d01,$ff00,$182,0
-
- dc.w $3001,$ff00 ; wait for end of pal screen
-
- dc.w $9c,$8010 ; irq set bits - ?
- dc.w $ffff,$fffe ; end of copper list
-
- glib: dc.b "graphics.library",0
- even
- dlib: dc.b "dos.library",0
- even
-
- tall equ 10
-
- screen: incbin "doclogo.bin"; must have the colour map before the
- ; image, must be 40 horz and any
- ; size vertically (within reason).
-
- scrsize: equ 40*tall*176 ; 150 names + 13 top + 13 bottom
- screen2: dc.l 0
- font: incbin "chrset.wrd"
- even
-
- topline: dc.l 0
- times: dc.l 0
- step: dc.l 0
- ypos: dc.l 0
- max: dc.l 0
-
- bplen equ ((screen2-screen)-32)/4
- top_of_copper equ 44+(bplen/40)
- down equ top_of_copper+108
- lookup_list: dcb.l 150,0
-
-
-
- End
-